package com.ruoyi.bmxt.service.impl;

import java.util.List;

import com.ruoyi.bmxt.domain.BmSchoolLevel;
import com.ruoyi.common.constant.BmxtConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.bmxt.mapper.BmLevelMapper;
import com.ruoyi.bmxt.domain.BmLevel;
import com.ruoyi.bmxt.service.IBmLevelService;

/**
 * 层次管理Service业务层处理
 * 
 * @author 魏建波
 * @date 2023-02-19
 */
@Service
public class BmLevelServiceImpl implements IBmLevelService 
{
    @Autowired
    private BmLevelMapper bmLevelMapper;

    /**
     * 查询层次管理
     * 
     * @param levelId 层次管理主键
     * @return 层次管理
     */
    @Override
    public BmLevel selectBmLevelByLevelId(Long levelId)
    {
        return bmLevelMapper.selectBmLevelByLevelId(levelId);
    }

    /**
     * 查询层次管理列表
     * 
     * @param bmLevel 层次管理
     * @return 层次管理
     */
    @Override
    public List<BmLevel> selectBmLevelList(BmLevel bmLevel)
    {
        return bmLevelMapper.selectBmLevelList(bmLevel);
    }

    /**
     * 新增层次管理
     * 
     * @param bmLevel 层次管理
     * @return 结果
     */
    @Override
    public int insertBmLevel(BmLevel bmLevel)
    {
        bmLevel.setCreateTime(DateUtils.getNowDate());
        return bmLevelMapper.insertBmLevel(bmLevel);
    }

    /**
     * 修改层次管理
     * 
     * @param bmLevel 层次管理
     * @return 结果
     */
    @Override
    public int updateBmLevel(BmLevel bmLevel)
    {
        bmLevel.setUpdateTime(DateUtils.getNowDate());
        return bmLevelMapper.updateBmLevel(bmLevel);
    }

    /**
     * 批量删除层次管理
     * 
     * @param levelIds 需要删除的层次管理主键
     * @return 结果
     */
    @Override
    public int deleteBmLevelByLevelIds(Long[] levelIds)
    {
        return bmLevelMapper.deleteBmLevelByLevelIds(levelIds);
    }

    /**
     * 删除层次管理信息
     * 
     * @param levelId 层次管理主键
     * @return 结果
     */
    @Override
    public int deleteBmLevelByLevelId(Long levelId)
    {
        return bmLevelMapper.deleteBmLevelByLevelId(levelId);
    }

    @Override
    public List<BmLevel> selectAllBmLevelList() {
        return bmLevelMapper.selectAllBmLevelList();
    }

    @Override
    public String checkProjectLevelNameUnique(BmLevel bmLevel) {
        Long projectLevelId = StringUtils.isNull(bmLevel.getLevelId()) ? -1L : bmLevel.getLevelId(); // -1 代表添加  有值代表更新
        BmLevel dbProjectLevel = bmLevelMapper.checkProjectLevelNameUnique(bmLevel);
        if (StringUtils.isNotNull(dbProjectLevel) && dbProjectLevel.getLevelId().longValue() != projectLevelId.longValue())
        {
            return BmxtConstants.NOT_UNIQUE;
        }
        return BmxtConstants.UNIQUE;
    }
}
